package com.leetcode;

import com.leetcode.support.Utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 2032. 至少在两个数组中出现的值
 * <p>
 * 给你三个整数数组 nums1、nums2 和 nums3 ，请你构造并返回一个 元素各不相同的 数组，且由 至少 在 两个 数组中出现的所有值组成。数组中的元素可以按 任意 顺序排列。
 */
public class LeetCode2032 {

    public static void main(String[] arg0) {
        int[] nums1 = new int[]{1, 1, 3, 2};
        int[] nums2 = new int[]{3, 2};
        int[] nums3 = new int[]{3};
        System.out.println("至少在两个数组中出现的值: " + Arrays.toString(twoOutOfThree(nums1, nums2, nums3).toArray()));
    }

    public static List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        Set<Integer> resultSet = new HashSet<>();
        resultSet.addAll(Utils.intersection(nums1, nums2));
        resultSet.addAll(Utils.intersection(nums1, nums3));
        resultSet.addAll(Utils.intersection(nums2, nums3));
        return new ArrayList<>(resultSet);
    }

}
